El presente taller tiene como finalidad analizar el funcionamiento de la capa de red a través
de dos herramientas del protocolo ICMP, \texttt{ping} y \texttt{traceroute}.
ICMP (Internet Control Message Protocol) es parte fundamental del protocolo IP.
Se lo suele utilizar como medidor de conectividad y detector de errores a nivel de IP.

La herramienta \texttt{ping} utiliza paquetes \texttt{echo-request} y \texttt{echo-reply} enviados a través de ICMP
y encapsulado bajo IP. El concepto deriva de análisis sonoros que para intentar detectar
objetos enviaban señales y medían el tiempo de respuesta de la señal.
En base a eso se podría calcular la distancia del objeto más próximo.
Si la señal sonora no volvía se podía asumir que no existían objetos lo suficientemente cerca.
Ping hace exactamente eso. Se envía un paquete a un objeto (host) y se calcula el tiempo
que tarda en ir y volver (RTT, Round-Trip Time) con lo cual se logra estimar
el tiempo de conexión entre ambos hosts.

El \texttt{traceroute} también se vale de ICMP. Pretende encontrar alguna ruta entre dos hosts
detectando en el camino host intermedios por los cuales tiene que pasar. Es posible que existan
muchos caminos entre dos host, traceroute detecta alguno. Para lograr esto lo que hace es enviar
paquetes con TTL (Time To Live) cada vez mayores, comenzando con 1. De esta manera, los nodos
van retransmitiendo el paquete a medida que decrementan el TTL, hasta que queda en cero, entonces
se envía un mensaje al host origen avisando que se terminó el tiempo del paquete (TIME EXCEEDED).
Traceroute se aprovecha de esta respuesta para detectar los caminos, dado que incrementa el TTL
hasta que la respuesta es enviada por el host al cual queremos llegar.

En todos los sistemas operativos modernos existen muy buenas implementaciones de estas herramientas.
En este taller pretendemos poder desarrollar esas herramientas y analizar su funcionamiento.
Las nativas serán utilizadas como testeo y análisis extra.
Las implementaciones propias de \texttt{ping} y \texttt{traceroute} fueron realizadas
bajo \textit{python} con la biblioteca de \textit{scapy} en entornos Linux.
Para el análisis se utilizó el entorno de \textit{R} y la biblioteca \textit{pydot} de python.
